package com.micro.frog.job.service;

import com.micro.frog.core.common.PageResult;
import com.micro.frog.core.common.Result;
import com.micro.frog.core.exception.MaException;
import com.micro.frog.job.model.dto.JobDTO;
import com.micro.frog.job.model.entity.Job;
import com.micro.frog.job.model.vo.TaskVO;

import java.text.ParseException;
import java.util.List;

/**
 * @author :  ljh
 * @date : 2018/5/8
 **/
public interface JobService {

    /**
     * 加载所有任务 不分页
     *
     * @return
     */
    List<Job> all();

    /**
     * 分页
     *
     * @param pageVO
     * @return
     */
    PageResult<TaskVO> listPage(JobDTO pageVO);

    /**
     * 添加
     *
     * @return
     */
    int add(Job job);

    /**
     * 删除
     *
     * @return
     */
    int delete(Integer id);

    /**
     * 修改
     *
     * @return
     */
    int update(Job job);

    /**
     * 新建任务并且注册到容器中
     *
     * @param job
     * @return
     * @throws MaException
     */
    Result addTaskAndJob(Job job) throws Exception;

    /**
     * 修改任务详情并且重建定时任务
     *
     * @param job
     * @return
     * @throws ClassNotFoundException
     * @throws NoSuchMethodException
     * @throws MaException
     * @throws ParseException
     */
    Result updateTaskAndRebuildJob(Job job) throws Exception;
    /**
     * 立即执行 批量启动任务
     * 同一切面的 入参一定要相同，不然切面解析会失败
     * @param taskIds
     * @param runner
     * @return
     */
    Result runTask(Integer[] taskIds, String runner) throws Exception;
}
